package com.itheima.service;

import com.github.pagehelper.PageInfo;
import com.itheima.common.R;
import com.itheima.mapper.OrderNewMapper;
import com.itheima.pojo.*;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author 林晓伟
 */
@Service
public class NewOrderService {
    @Resource
    private OrderNewMapper orderNewMapper;

    /**
     * F16-提交订单
     *
     * @param orders 订单对象
     */
    public Integer a(Orders orders) {
        //获取菜品的价钱和数量
        List<Integer> m = orderNewMapper.m();
        Integer money = 0;
        for (Integer integer : m) {
            money = integer + money;
        }
        //获取默认地址的属性
        Site sele = orderNewMapper.sele();
        //手机号
        orders.setPhone(sele.getPhone());
        //收货人
        orders.setConsignee(sele.getConsignee());
        orders.setUserName(sele.getConsignee());
        //地址
        orders.setAddress(sele.getDetail());
        //商品价格总和
        orders.setAmount(money);
        //设置订单状态为正在派送 1 为待付款  2 正在派送
        orders.setStatus(2);
        //订单号
        long l = System.currentTimeMillis();
        String s = String.valueOf(l);
        orders.setNumber(s);
        List<Shopping> hj = orderNewMapper.hj();
        for (Shopping shopping : hj) {
            Integer number = shopping.getNumber();
            String name = shopping.getName();
            orderNewMapper.jjj(number, name, s);
        }
        return orderNewMapper.sel(orders);
    }

    /**
     * F16-提交订单
     *
     * @param page     页数
     * @param pageSize 每页条数
     */
    public R select(Integer page, Integer pageSize) {
        //构建分页拦截器
        //PageHelper.startPage(m,n)两个参数，第一个参数是页数。第二个参数是条数，每页查询的条数。
//        limit 1,5 查询的是从第二页开始，虽然不会报错，但是读不到数据，如果数据只有一条，应该从0开始
        List<Orders> employeeList = orderNewMapper.b(page - 1, pageSize);
        for (Orders orders : employeeList) {
            List<OrdersDish> hj = orderNewMapper.kkk(String.valueOf(orders.getNumber()));
            for (OrdersDish ignored : hj) {
                orders.setOrderDetails(hj);
            }
        }
        PageInfo<Orders> pageInfo = new PageInfo<>(employeeList);
        //返回值对象，这里的P类是根据前端要的数据专门写的类。属性只有这四条
        Paging p = new Paging();
        //总条数
        p.setTotal(pageInfo.getTotal());
        //每页显示条数
        p.setSize(pageInfo.getSize());
        //当前页码
        p.setCurrent(pageInfo.getPageNum());
        //页数
        p.setPages(pageInfo.getPages());
        //被展示的数据集number
        p.setRecords(employeeList);
        return R.success(p);
    }
}
